﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace Systemet.SideViews
{
    public partial class SideKostnadsbudgetering : UserControl
    {
        private Views.Resursallokering mainResursAllo;
        private Views.PersonalrelateradeKostnader mainPersonalRela;
        private Views.Direktkostnadsbudgetering mainDirektKostn;
        private Views.Kostnadsrapporter mainKostnRapp;
        private Domain.KontoController kontoC;
        private Domain.KostnadsBudgController kBC;
        private IEnumerable<Kontoregister> konton;
        private IEnumerable<Kontoregister> tempKonto;
        

        //Resursallokering variabler
        private Domain.ProdukController pC;
        private IEnumerable<Produktregister> products;
        private string prodOmrade ="";

        //Direktkostnads allokering variabler
        private Domain.AktivitetsController aC;
        private IEnumerable<Aktivietetsregister> activities;
        private Domain.KontoController kC;
       //Kostnadsrapporter variabler
        private string direktArsarbetare;
        private string produktAktivitet;

        public SideKostnadsbudgetering()
        {
            
            InitializeComponent();
            AccessController.Instance.SidMeny = this;
            if (AccessController.Instance.KostnadsBudgetUnlocked)
            {
                btnTotPers.Enabled = AccessController.Instance.UserRoleLoggedInUser.PersonalrelateradeKostSynlig;
                btnDirKost.Enabled = AccessController.Instance.UserRoleLoggedInUser.DirektKostnadsBudgSynlig;
                btnResAllo.Enabled = AccessController.Instance.UserRoleLoggedInUser.ResursallkoeringSynlig;
            }
            btnKostRapp.Enabled = AccessController.Instance.UserRoleLoggedInUser.KostnadsrapporterSök;
            kBC = new Domain.KostnadsBudgController();
            kontoC = new Domain.KontoController();
            SetDefaultValues();
            //FilterComboboxes();
        }

        private void SetDefaultValues()
        {
            pnlArsArb.Height = 30;
            pnlDirKost.Height = 30;
            pnlKosRapp.Height = 30;
            pnlTotPersonal.Height = 30;
        }

        private void btnResAllo_Click(object sender, EventArgs e)
        {
            if (pnlArsArb.Height > 40)
            {
                pnlArsArb.Height = 30;
            }
            else
            {
                pnlDirKost.Height = 30;
                pnlKosRapp.Height = 30;
                pnlTotPersonal.Height = 30;
                pnlArsArb.Height = 238;
                FlowController.Instance.ShowSpecifikMenu(FlowController.Instance.MainTabView[0]);
                AccessController.Instance.MainView = (Views.Resursallokering)FlowController.Instance.getUserControl(FlowController.Instance.MainTabView[0]);
                mainResursAllo = (Views.Resursallokering)AccessController.Instance.ReturnMainView();
                OnProductionAreaChange(null, null);

            }
        }

        //Fyller alla Produkter/Aktiviter beroende på valt sökval
        private void OnProductionAreaChange(object sender, EventArgs e)
        {
            kBC = new Domain.KostnadsBudgController();
            kBC.ClearDGV();
            if (checkBoxResursDrift.CheckState == CheckState.Checked)
            {
                pC = new Domain.ProdukController();
                products = pC.Produktlista;
                cmBProdKategori.DataSource = fillSearchKriteria("ProdKategori", "Drift", null);
                cmBProdKategori.Text = "";
                cmBProduktgrupp.DataSource = fillSearchKriteria("Prodgrupp", "Drift", null);
                cmBProduktgrupp.Text = "";
                gBFiltreringskriterier.Height = 110;
                prodOmrade = "Drift";
                pnlArsArb.Height = 230;
            }
            if (checkBoxResursUtvForv.CheckState == CheckState.Checked)
            {
                pC = new Domain.ProdukController();
                products = pC.Produktlista;
                cmBProdKategori.DataSource = fillSearchKriteria("ProdKategori", "Utv", null);
                cmBProdKategori.Text = "";
                cmBProduktgrupp.DataSource = fillSearchKriteria("Prodgrupp", "Utv", null);
                cmBProduktgrupp.Text = "";
                gBFiltreringskriterier.Height = 110;
                prodOmrade = "Utv/Förv";
                pnlArsArb.Height = 230;

            }
            if (checkBoxResursAdm.CheckState == CheckState.Checked)
            {
                gBFiltreringskriterier.Height = 0;
                prodOmrade = "Adm";
                kBC.RetrieveStaffNProducts("", "", prodOmrade);
                pnlArsArb.Height = 115;
            }
            if (checkBoxResursForsMark.CheckState == CheckState.Checked)
            {
                gBFiltreringskriterier.Height = 0;
                prodOmrade = "mark";
                kBC.RetrieveStaffNProducts("", "", prodOmrade);
                pnlArsArb.Height = 115;
            }

        }

        

        //Hämtar valda sökkriterier
        private List<string> fillSearchKriteria(string SearchOption, string prodOmrade, object sender)
        {
            string kategori = "";
            if (sender == null)
            {
                kategori = cmBProdKategori.Text;
            }
            else
            {
                kategori = cBDirKostProdKat.Text;
            }
            List<string> tempProducts = new List<string>();
            tempProducts.Clear();
            if (SearchOption == "ProdKategori")
            {
                foreach (Produktregister p in products)
                {
                    if (p.avdelningsnamn.Contains(prodOmrade))
                    {
                        if (!tempProducts.Contains(p.Produktkategori.produktKategoriNamn))
                        {
                            tempProducts.Add(p.Produktkategori.produktKategoriNamn);
                        }
                    }
                }
                cmBProdKategori.Text = "";
                tempProducts.Sort();
                return tempProducts;
            }
            if (SearchOption == "Prodgrupp")
            {
                foreach (Produktregister p in products)
                {
                    if (p.avdelningsnamn.Contains(prodOmrade) && p.Produktkategori.produktKategoriNamn.Contains(kategori))
                    {
                        if (!tempProducts.Contains(p.Produktgrupp.produktGruppNamn))
                        {
                            tempProducts.Add(p.Produktgrupp.produktGruppNamn);
                        }
                    }
                }
                tempProducts.Sort();
                return tempProducts;
            }
            if (SearchOption == "Prodnamn")
            {
                foreach (Produktregister p in products)
                {
                    if (p.avdelningsnamn.Contains(prodOmrade) && p.Produktkategori.produktKategoriNamn.Contains(kategori) && 
                        p.Produktgrupp.produktGruppNamn.Contains(cBDirKostProdGrupp.Text))
                    {
                        if (!tempProducts.Contains(p.produkt))
                        {
                            tempProducts.Add(p.produkt);
                        }
                    }
                }
                tempProducts.Sort();
                return tempProducts;
            }
            if (SearchOption == "ProdID")
            {
                foreach (Produktregister p in products)
                {
                    if (p.avdelningsnamn.Contains(prodOmrade) && p.Produktkategori.produktKategoriNamn.Contains(kategori) && 
                        p.Produktgrupp.produktGruppNamn.Contains(cBDirKostProdGrupp.Text))
                    {
                        if (!tempProducts.Contains(p.produktID))
                        {
                            tempProducts.Add(p.produktID);
                        }
                    }
                }
                tempProducts.Sort();
                return tempProducts;
            }
            return null;
        }
        private void cmBProdKategori_SelectedIndexChanged(object sender, EventArgs e)
        {
            cmBProduktgrupp.DataSource = null;
            cmBProduktgrupp.DataSource = fillSearchKriteria("Prodgrupp", prodOmrade, null);
            cmBProduktgrupp.Text = "";
            kBC = new Domain.KostnadsBudgController();
            kBC.ClearDGV();

        }
        public void cmBProduktgrupp_SelectedIndexChanged(object sender, EventArgs e)
        {

            if ((sender == cmBProduktgrupp && cmBProduktgrupp.Focused == true) || e == null)
            {
                string prodgrupp = cmBProduktgrupp.Text;
                string prodKategori = cmBProdKategori.Text;
                kBC = new Domain.KostnadsBudgController();
                kBC.RetrieveStaffNProducts(prodgrupp, prodKategori, prodOmrade);
            }
        }


        //Slut Resursallokering


        private void btnTotPers_Click(object sender, EventArgs e)
        {
            if (pnlTotPersonal.Height > 40)
            {
                pnlTotPersonal.Height = 30;
            }
            else
            {
                pnlArsArb.Height = 30;
                pnlKosRapp.Height = 30;
                pnlDirKost.Height = 30;
                pnlTotPersonal.Height = 164;
                FlowController.Instance.ShowSpecifikMenu(FlowController.Instance.MainTabView[1]);
                AccessController.Instance.MainView = (Views.PersonalrelateradeKostnader)FlowController.Instance.getUserControl(FlowController.Instance.MainTabView[1]);
                mainPersonalRela = (Views.PersonalrelateradeKostnader)AccessController.Instance.ReturnMainView();
                //kontoC.updateBudResDGV();
                UpdateKontoList();
            }

        }

        private void tbKontofran_TextChanged(object sender, EventArgs e)
        {
            UpdateKontoList();
            mainPersonalRela = (Views.PersonalrelateradeKostnader)AccessController.Instance.ReturnMainView();
            mainPersonalRela.setColumns();
        }

        private void btnDirKost_Click(object sender, EventArgs e)
        {
            if (pnlDirKost.Height > 40)
            {
                pnlDirKost.Height = 30;
            }
            else
            {
                pnlArsArb.Height = 30;
                pnlKosRapp.Height = 30;
                pnlTotPersonal.Height = 30;
                pnlDirKost.Height = 339;
                FlowController.Instance.ShowSpecifikMenu(FlowController.Instance.MainTabView[2]);
                AccessController.Instance.MainView = (Views.Direktkostnadsbudgetering)FlowController.Instance.getUserControl(FlowController.Instance.MainTabView[2]);
                mainDirektKostn = (Views.Direktkostnadsbudgetering)AccessController.Instance.ReturnMainView();
                OnDepartmentChecked_Changed(null, null);
            }
        }

        //Start Direkt kostnadsallokering
        private void OnDepartmentChecked_Changed(object sender, EventArgs e)
        {
            kBC = new Domain.KostnadsBudgController();
            kBC.clearDirectCostDGV();

            if (cBDirKostBAdm.CheckState == CheckState.Checked)
            {
                lblProdAktiv.Text = "Aktivitetsnamn";
                prodOmrade = "Adm";
                EditableCmbs(true);

                cBDirKostProdAktivitet.DataSource = FillSearchKriteriaActivities("aktivitetsnamn", prodOmrade);
                cBDirKostProdAktivitet.Text = "";
                cBDirKostAktivitetID.DataSource = FillSearchKriteriaActivities("aktivitetsID", prodOmrade);
                cBDirKostAktivitetID.Text = "";
                kBC.RetrieveSearchedActivitiesNAccounts(prodOmrade, cBDirKostProdAktivitet.Text, cBDirKostAktivitetID.Text, tBDirKostKontoFran.Text, tBDirKostKontoTill.Text);
            }
            if (cBDirKostBForsMark.CheckState == CheckState.Checked)
            {
                lblProdAktiv.Text = "Aktivitetsnamn";
                prodOmrade = "mark";
                EditableCmbs(true);

                cBDirKostProdAktivitet.DataSource = FillSearchKriteriaActivities("aktivitetsnamn", prodOmrade);
                cBDirKostProdAktivitet.Text = "";
                cBDirKostAktivitetID.DataSource = FillSearchKriteriaActivities("aktivitetsID", prodOmrade);
                cBDirKostAktivitetID.Text = "";
                kBC.RetrieveSearchedActivitiesNAccounts(prodOmrade, cBDirKostProdAktivitet.Text, cBDirKostAktivitetID.Text, tBDirKostKontoFran.Text, tBDirKostKontoTill.Text);
            }
            if (cBDirKostBDrift.CheckState == CheckState.Checked)
            {
                lblProdAktiv.Text = "Produktnamn";
                prodOmrade = "Drift";
                EditableCmbs(false);
                pC = new Domain.ProdukController();
                products = pC.Produktlista;
                cBDirKostProdKat.DataSource = fillSearchKriteria("ProdKategori", prodOmrade, cBDirKostProdKat);
                cBDirKostProdKat.Text = "";
                cBDirKostProdGrupp.DataSource = fillSearchKriteria("Prodgrupp", prodOmrade, cBDirKostProdGrupp);
                cBDirKostProdGrupp.Text = "";
                cBDirKostProdAktivitet.DataSource = fillSearchKriteria("Prodnamn", prodOmrade, cBDirKostProdAktivitet);
                cBDirKostProdAktivitet.Text = "";
                cBDirKostProdID.DataSource = fillSearchKriteria("ProdID", prodOmrade, cBDirKostProdID);
                cBDirKostProdID.Text = "";

            }
            if (cBDirKostBUtvForv.CheckState == CheckState.Checked)
            {
                lblProdAktiv.Text = "Produktnamn";
                prodOmrade = "Förv";
                EditableCmbs(false);
                pC = new Domain.ProdukController();
                products = pC.Produktlista;
                cBDirKostProdKat.DataSource = fillSearchKriteria("ProdKategori", prodOmrade, cBDirKostProdKat);
                cBDirKostProdKat.Text = "";
                cBDirKostProdGrupp.DataSource = fillSearchKriteria("Prodgrupp", prodOmrade, cBDirKostProdGrupp);
                cBDirKostProdGrupp.Text = "";
                cBDirKostProdAktivitet.DataSource = fillSearchKriteria("Prodnamn", prodOmrade, cBDirKostProdAktivitet);
                cBDirKostProdAktivitet.Text = "";
                cBDirKostProdID.DataSource = fillSearchKriteria("ProdID", prodOmrade, cBDirKostProdID);
                cBDirKostProdID.Text = "";
            }
        }
        //Vid förändring av prodkategori
        private void cBDirKostProdKat_SelectedIndexChanged(object sender, EventArgs e)
        {
            cBDirKostProdGrupp.DataSource = null;
            cBDirKostProdGrupp.DataSource = fillSearchKriteria("Prodgrupp", prodOmrade, cBDirKostProdKat);
            cBDirKostProdGrupp.Text = "";
            cBDirKostProdAktivitet.Text = "";
            cBDirKostProdID.Text = "";

            //uppdatering av DGV
            if (sender == cBDirKostProdKat && cBDirKostProdKat.Focused == true)
            {
                kBC = new Domain.KostnadsBudgController();
                kBC.RetrieveSearchedProductsNAccounts(prodOmrade, cBDirKostProdKat.Text, cBDirKostProdGrupp.Text, cBDirKostProdAktivitet.Text, cBDirKostProdID.Text, tBDirKostKontoFran.Text, tBDirKostKontoTill.Text);
            }
        }
        //Vid förändring av Prodgrupp
        private void cBDirKostProdGrupp_SelectedIndexChanged(object sender, EventArgs e)
        {
            cBDirKostProdAktivitet.DataSource = null;
            cBDirKostProdAktivitet.DataSource = fillSearchKriteria("Prodnamn", prodOmrade, cBDirKostProdKat);
            cBDirKostProdAktivitet.Text = "";
            cBDirKostProdID.Text = "";

            //uppdatering av DGV
            if (sender == cBDirKostProdGrupp && cBDirKostProdGrupp.Focused == true)
            {
                kBC = new Domain.KostnadsBudgController();
                kBC.RetrieveSearchedProductsNAccounts(prodOmrade, cBDirKostProdKat.Text, cBDirKostProdGrupp.Text, cBDirKostProdAktivitet.Text, cBDirKostProdID.Text, tBDirKostKontoFran.Text, tBDirKostKontoTill.Text);
            }
        }
        //Vid förändring av produkt/aktivitet
        private void cBDirKostProdAktivitet_SelectedIndexChanged(object sender, EventArgs e)
        {
            //uppdatering av DGV
            if (sender == cBDirKostProdAktivitet && cBDirKostProdAktivitet.Focused == true)
            {
                if (cBDirKostBAdm.Checked || cBDirKostBForsMark.Checked)
                {
                    foreach (Aktivietetsregister a in activities)
                    {
                        if (a.aktivitet == cBDirKostProdAktivitet.Text)
                        {
                            cBDirKostAktivitetID.Text = a.aktivitetsID;
                            break;
                        }

                    }
                }
                if (cBDirKostBDrift.Checked || cBDirKostBUtvForv.Checked)
                {
                    foreach (Produktregister p in products)
                    {
                        if (p.produkt == cBDirKostProdAktivitet.Text)
                        {
                            cBDirKostProdID.Text = p.produktID;
                            break;
                        }
                    }
                }
                UpdateDirectCostMainDGV(prodOmrade);
            }
            if (sender == cBDirKostProdID && cBDirKostProdID.Focused == true)
            {//För att fixa sökning via PROD-ID!
                foreach (Produktregister p in products)
                {
                    if (p.produktID == cBDirKostProdID.Text)
                    {
                        cBDirKostProdAktivitet.Text = p.produkt;
                        break;
                    }
                }
                UpdateDirectCostMainDGV(prodOmrade);
            }
            if (sender == cBDirKostAktivitetID && cBDirKostAktivitetID.Focused == true)
            {//För att fixa sökning via AKTIVITETS-ID!
                foreach (Aktivietetsregister a in activities)
                {
                    if (a.aktivitetsID == cBDirKostAktivitetID.Text)
                    {
                        cBDirKostProdAktivitet.Text = a.aktivitet;
                        break;
                    }

                }
                UpdateDirectCostMainDGV(prodOmrade);
            }

        }
        //uppdatering av DGV vid kontoförändringar
        private void fillKontoNr(object sender, EventArgs e)
        {
            UpdateDirectCostMainDGV(prodOmrade);
        }

        private List<string> FillSearchKriteriaActivities(string searchOption, string prodomrade)
        {
            List<string> tempActivities = new List<string>();
            tempActivities.Clear();
            aC = new Domain.AktivitetsController();
            activities = aC.ComboboxUpdate();
            if (searchOption == "aktivitetsnamn")
            {
                foreach (Aktivietetsregister a in activities)
                {
                    if (a.avdelningsnamn.Contains(prodOmrade))
                    {
                        if (!tempActivities.Contains(a.aktivitet))
                        {
                            tempActivities.Add(a.aktivitet);
                        }
                    }

                }
                tempActivities.Sort();
                return tempActivities;
            }
            if (searchOption == "aktivitetsID")
            {
                foreach (Aktivietetsregister a in activities)
                {
                    if (a.avdelningsnamn.Contains(prodOmrade))
                    {
                        if (!tempActivities.Contains(a.aktivitetsID))
                        {
                            tempActivities.Add(a.aktivitetsID);
                        }
                    }

                }
                tempActivities.Sort();
                return tempActivities;
            }
            return null;

        }

        private void EditableCmbs(bool IsAdm)
        {
            if (IsAdm)
            {
                cBDirKostProdKat.Enabled = false;
                cBDirKostProdGrupp.Enabled = false;
                cBDirKostProdID.Enabled = false;
                cBDirKostAktivitetID.Enabled = true;
            }
            else
            {
                cBDirKostProdKat.Enabled = true;
                cBDirKostProdGrupp.Enabled = true;
                cBDirKostProdID.Enabled = true;
                cBDirKostAktivitetID.Enabled = false;
            }
        
        }

        public void UpdateDirectCostMainDGV(string department)
        {
            kBC = new Domain.KostnadsBudgController();
            if (department.Contains("Drift") || department.Contains("Förv"))
            {
                kBC.RetrieveSearchedProductsNAccounts(prodOmrade, cBDirKostProdKat.Text, cBDirKostProdGrupp.Text, cBDirKostProdAktivitet.Text, cBDirKostProdID.Text, tBDirKostKontoFran.Text, tBDirKostKontoTill.Text);
            }
            if (department.Contains("Adm") || department.Contains("mark"))
            {
                kBC.RetrieveSearchedActivitiesNAccounts(prodOmrade, cBDirKostProdAktivitet.Text, cBDirKostAktivitetID.Text, tBDirKostKontoFran.Text, tBDirKostKontoTill.Text);
            }
        }


        //Slut Direktkostnad på produkter

        //Start Kostnadsrapporter
        private void btnKostRapp_Click(object sender, EventArgs e)
        {
            if (pnlKosRapp.Height > 40)
            {
                pnlKosRapp.Height = 30;
            }
            else
            {
                pnlArsArb.Height = 30;
                pnlTotPersonal.Height = 30;
                pnlDirKost.Height = 30;
                pnlKosRapp.Height = 233;
                FlowController.Instance.ShowSpecifikMenu(FlowController.Instance.MainTabView[3]);
                AccessController.Instance.MainView = (Views.Kostnadsrapporter)FlowController.Instance.getUserControl(FlowController.Instance.MainTabView[3]);
                mainKostnRapp = (Views.Kostnadsrapporter)AccessController.Instance.ReturnMainView();
                cmBAvd.Text = "";
                cmBdirKArsarb.Text = "";
            }
        }

        private void ReportSelectionChange(object sender, EventArgs e)
        {
            kBC = new Domain.KostnadsBudgController();
            if (sender == cmBAvd)
            {
                if(cmBAvd.Text == "Administrativ")
                {
                    prodOmrade = "Adm";
                }
                if(cmBAvd.Text == "Försäljning/marknads")
                {
                    prodOmrade = "mark";
                }
                if(cmBAvd.Text == "Utveckling/Förvalt")
                {
                    prodOmrade = "Förv";
                }
                if(cmBAvd.Text == "Drift")
                {
                    prodOmrade = "Drift";
                }
                if (cmBdirKArsarb.Text == "Årsarbetare")
                {

                    if (prodOmrade == "Drift" || prodOmrade == "Förv")
                    {

                        kBC.CostReportOnStaffCostsNProducts(prodOmrade);
                    }
                    else
                    {
                        kBC.CostReportOnStaffCostsNActivities(prodOmrade);
                    }
                }
                if (cmBdirKArsarb.Text == "Direkt kostnad")
                {
                    if (prodOmrade == "Drift" || prodOmrade == "Förv")
                    {
                        kBC.DirectCostreportOnDepartment(prodOmrade);
                    }
                    else
                    {
                        kBC.DirectCostreportOnDepartment(prodOmrade);
                    }
                }

            }
            if (sender == cmBdirKArsarb)
            {
                cmBAvd.Text = "";
                direktArsarbetare = cmBdirKArsarb.Text;
            }

            if (cmBAvd.Text == "")
            {
                kBC.ClearKrDgv();
            }
        }




        private void SideKostnadsbudgetering_Load(object sender, EventArgs e)
        {
            FlowController.Instance.StarSkarm();
            setAccess();
        }

        /// <summary>
        /// Används för att setta restriktioner utefter vilken avdelningschef som är inloggad.
        /// En Driftchef får t.ex. inte resursallokera utveckling/förvaltnings anställda.
        /// </summary>
        private void setAccess()
        {
            int userRoleID = 0;

            if (AccessController.Instance.LoggedInUser.RoleID > 0)
            {
                userRoleID = (int)AccessController.Instance.LoggedInUser.RoleID;
            }

            switch (userRoleID) 
            {
                case 3:
                    cBDirKostBAdm.Checked = true;
                    cBDirKostAktivitetID.Enabled = true;

                    checkBoxResursAdm.Checked = true;
                    break;
                case 4:
                    cBDirKostBForsMark.Checked = true;
                    cBDirKostAktivitetID.Enabled = true;

                    checkBoxResursForsMark.Checked = true;
                    break;
                case 5:
                    cBDirKostBDrift.Checked = true;
                    cBDirKostProdID.Enabled = true;
                    cBDirKostProdGrupp.Enabled = true;
                    cBDirKostProdKat.Enabled = true;

                    checkBoxResursDrift.Checked = true;
                    cBDirKostBDrift.Checked = true;
                    break;
                case 6:
                    cBDirKostBUtvForv.Checked = true;
                    cBDirKostProdID.Enabled = true;
                    cBDirKostProdGrupp.Enabled = true;
                    cBDirKostProdKat.Enabled = true;

                    checkBoxResursUtvForv.Checked = true;
                    break;
                default:
                    //ADMINISTRATÖRSROLL
                    //DirektKostnad
                    cBDirKostBAdm.Enabled = true;
                    cBDirKostBForsMark.Enabled = true;
                    cBDirKostAktivitetID.Enabled = true;
                    cBDirKostBDrift.Enabled = true;
                    cBDirKostBUtvForv.Enabled = true;
                    cBDirKostProdID.Enabled = true;
                    cBDirKostProdGrupp.Enabled = true;
                    cBDirKostProdKat.Enabled = true;

                    //Resursallokering
                    checkBoxResursAdm.Enabled = true;
                    checkBoxResursForsMark.Enabled = true;
                    checkBoxResursDrift.Enabled = true;
                    checkBoxResursUtvForv.Enabled = true;
                    break;
            }
        }
        //Resursallokering uncheckar de andra checkboxarna så att bara en är i tryckt
        private void changeCheckState(object sender, EventArgs e)
        {
            if (sender == checkBoxResursAdm && checkBoxResursAdm.Focused == true)
            {
                checkBoxResursAdm.CheckState = CheckState.Checked;
                checkBoxResursDrift.CheckState = CheckState.Unchecked;
                checkBoxResursForsMark.CheckState = CheckState.Unchecked;
                checkBoxResursUtvForv.CheckState = CheckState.Unchecked;
                prodOmrade = "Adm";
                OnProductionAreaChange(null, null);

            }
            if (sender == checkBoxResursDrift && checkBoxResursDrift.Focused == true)
            {
                checkBoxResursAdm.CheckState = CheckState.Unchecked;
                checkBoxResursDrift.CheckState = CheckState.Checked;
                checkBoxResursForsMark.CheckState = CheckState.Unchecked;
                checkBoxResursUtvForv.CheckState = CheckState.Unchecked;
                prodOmrade = "Drift";
                OnProductionAreaChange(null, null);

            }
            if (sender == checkBoxResursForsMark && checkBoxResursForsMark.Focused == true)
            {
                checkBoxResursAdm.CheckState = CheckState.Unchecked;
                checkBoxResursDrift.CheckState = CheckState.Unchecked;
                checkBoxResursForsMark.CheckState = CheckState.Checked;
                checkBoxResursUtvForv.CheckState = CheckState.Unchecked;
                prodOmrade = "mark";
                OnProductionAreaChange(null, null);
            }
            if (sender == checkBoxResursUtvForv && checkBoxResursUtvForv.Focused == true)
            {
                checkBoxResursAdm.CheckState = CheckState.Unchecked;
                checkBoxResursDrift.CheckState = CheckState.Unchecked;
                checkBoxResursForsMark.CheckState = CheckState.Unchecked;
                checkBoxResursUtvForv.CheckState = CheckState.Checked;
                prodOmrade = "Utv";
                OnProductionAreaChange(null, null);
            }
        }

        //DirektKostnad uncheckar de andra checkboxarna så att bara en är i tryckt
        private void changeCheckStateDirKost(object sender, EventArgs e)
        {
            if (sender == cBDirKostBAdm && cBDirKostBAdm.Focused == true)
            {
                cBDirKostBAdm.CheckState = CheckState.Checked;
                cBDirKostBDrift.CheckState = CheckState.Unchecked;
                cBDirKostBForsMark.CheckState = CheckState.Unchecked;
                cBDirKostBUtvForv.CheckState = CheckState.Unchecked;
                prodOmrade = "Adm";
                OnDepartmentChecked_Changed(cBDirKostBAdm, null);

            }
            if (sender == cBDirKostBDrift && cBDirKostBDrift.Focused == true)
            {
                cBDirKostBAdm.CheckState = CheckState.Unchecked;
                cBDirKostBDrift.CheckState = CheckState.Checked;
                cBDirKostBForsMark.CheckState = CheckState.Unchecked;
                cBDirKostBUtvForv.CheckState = CheckState.Unchecked;
                prodOmrade = "Drift";
                OnDepartmentChecked_Changed(cBDirKostBDrift, null);

            }
            if (sender == cBDirKostBForsMark && cBDirKostBForsMark.Focused == true)
            {
                cBDirKostBAdm.CheckState = CheckState.Unchecked;
                cBDirKostBDrift.CheckState = CheckState.Unchecked;
                cBDirKostBForsMark.CheckState = CheckState.Checked;
                cBDirKostBUtvForv.CheckState = CheckState.Unchecked;
                prodOmrade = "mark";
                OnDepartmentChecked_Changed(cBDirKostBForsMark, null);
            }
            if (sender == cBDirKostBUtvForv && cBDirKostBUtvForv.Focused == true)
            {
                cBDirKostBAdm.CheckState = CheckState.Unchecked;
                cBDirKostBDrift.CheckState = CheckState.Unchecked;
                cBDirKostBForsMark.CheckState = CheckState.Unchecked;
                cBDirKostBUtvForv.CheckState = CheckState.Checked;
                prodOmrade = "Utv";
                OnDepartmentChecked_Changed(cBDirKostBUtvForv, null);
            }
        }

        public void UpdateKontoList()
        {

            string kontonummerfran = tbKontofran.Text;
            string kontonummertill = tbkontotill.Text;
            if (tbkontotill.Text == "")
            {
                kontonummertill = "9999";
            }
            if (tbkontotill.Text.Length == 1)
            {
                kontonummertill = kontonummertill + "999";
            }
            if (tbkontotill.Text.Length == 2)
            {
                kontonummertill = kontonummertill + "99";
            }
            if (tbkontotill.Text.Length == 3)
            {
                kontonummertill = kontonummertill + "9";
            }
            kontoC = new Domain.KontoController();
            comboBoxKonto.Items.Clear();

            //tempKonto = kontoC.SearchUpdate(kontonummerfran, kontonummertill);
            //foreach (Kontoregister k in tempKonto)
            //{
            //    comboBoxKonto.Items.Add(k.kontobenämning);
            //}
            mainPersonalRela = (Views.PersonalrelateradeKostnader)AccessController.Instance.MainView;
            mainPersonalRela.updateSearchDGV(kontoC.SearchUpdate(kontonummerfran, kontonummertill));
            foreach (Konto k in kontoC.SearchUpdate(kontonummerfran, kontonummertill))
            {
                comboBoxKonto.Items.Add(k.Kontobenämning);
            }
            //comboBoxKonto.Items.Add(kontoC.SearchUpdate(kontonummerfran, kontonummertill));

        }
        private void FilterComboboxes()
        {     
            kC = new Domain.KontoController();
            konton = kC.RetrieveKontoben();
            string kontoBen;
            if (comboBoxKonto.Text == "Alla")
            {
                kontoBen = "";
            }
            else
            {
                kontoBen = comboBoxKonto.Text;
            }
            comboBoxKonto.Items.Clear();
       
            foreach (Kontoregister k in konton)
            {
                if (k.kontobenämning == kontoBen || kontoBen == "")
                {
                    comboBoxKonto.Items.Add(k.kontobenämning);
                   
                }
            }
        }


        //ÄNDRA OM SÅ ATT SELECCTED INDEX --> KONTONUMMER --> FOCUS PÅ DATAGRIDVIEW-KONTO
        private void comboBoxKonto_SelectedIndexChanged(object sender, EventArgs e)
        {
            kC = new Domain.KontoController();
            tempKonto = kC.RetrieveKontoben();
            if (comboBoxKonto.Text.Count() > 1)
            {
                kontoC = new Domain.KontoController();
                kontoC.SetFocusInDGW(comboBoxKonto.Text, tempKonto);

            }
        }
    }
}
